<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>Dinic: Referencia del Archivo dirmain/main.c</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Dinic
   &#160;<span id="projectnumber">1.0</span>
   </div>
   <div id="projectbrief">Documentacion de la API de DINIC para la catedra de Matemática Discreta II.</div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Buscar" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generado por Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Buscar');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('main_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>Todo</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Estructuras de Datos</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Archivos</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Funciones</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>&apos;typedefs&apos;</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>&apos;defines&apos;</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#define-members">'defines'</a> &#124;
<a href="#func-members">Funciones</a>  </div>
  <div class="headertitle">
<div class="title">Referencia del Archivo main.c</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;ctype.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;stdbool.h&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;assert.h&gt;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;<a class="el" href="API_8h_source.html">../apifiles/API.h</a>&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Dependencia gráfica adjunta para main.c:</div>
<div class="dyncontent">
<div class="center"><img src="main_8c__incl.png" border="0" usemap="#dirmain_2main_8c" alt=""/></div>
<map name="dirmain_2main_8c" id="dirmain_2main_8c">
<area shape="rect" href="API_8h.html" title="Permite cargar un network y calcular su flujo maximal utilizando Dinic. " alt="" coords="624,80,733,107"/><area shape="rect" href="__u64_8h.html" title="Se utiliza el tipo de dato u64 para especificar un entero de 64 bits sin signo. " alt="" coords="647,229,708,256"/><area shape="rect" href="lado_8h.html" title="Lado es una estructura que representa un lado del network. " alt="" coords="683,155,739,181"/></map>
</div>
</div>
<p><a href="main_8c_source.html">Ir al código fuente de este archivo.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
'defines'</h2></td></tr>
<tr class="memitem:ac2703d00e705d8333814a8cfa4446b4f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#ac2703d00e705d8333814a8cfa4446b4f">DONT_DINIC</a>&#160;&#160;&#160;0b10000000</td></tr>
<tr class="memdesc:ac2703d00e705d8333814a8cfa4446b4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main para probar la API que corre el algoritmo DINIC en networks.  <a href="#ac2703d00e705d8333814a8cfa4446b4f">Más...</a><br /></td></tr>
<tr class="separator:ac2703d00e705d8333814a8cfa4446b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14bc2dfa42241600d567369cd25ddc70"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a14bc2dfa42241600d567369cd25ddc70">S_OK</a>&#160;&#160;&#160;0b01000000</td></tr>
<tr class="memdesc:a14bc2dfa42241600d567369cd25ddc70"><td class="mdescLeft">&#160;</td><td class="mdescRight">'s' fue pasado como parámetro.  <a href="#a14bc2dfa42241600d567369cd25ddc70">Más...</a><br /></td></tr>
<tr class="separator:a14bc2dfa42241600d567369cd25ddc70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad66884268b15b247511f33de5b432ad7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#ad66884268b15b247511f33de5b432ad7">T_OK</a>&#160;&#160;&#160;0b00100000</td></tr>
<tr class="memdesc:ad66884268b15b247511f33de5b432ad7"><td class="mdescLeft">&#160;</td><td class="mdescRight">'t' fue pasado como parámetro.  <a href="#ad66884268b15b247511f33de5b432ad7">Más...</a><br /></td></tr>
<tr class="separator:ad66884268b15b247511f33de5b432ad7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a992b37f9220c18652955c2ab5bb49e3d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a992b37f9220c18652955c2ab5bb49e3d">DINIC_TIME</a>&#160;&#160;&#160;0b00010000</td></tr>
<tr class="memdesc:a992b37f9220c18652955c2ab5bb49e3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activa el muestreo de tiempos de calculo.  <a href="#a992b37f9220c18652955c2ab5bb49e3d">Más...</a><br /></td></tr>
<tr class="separator:a992b37f9220c18652955c2ab5bb49e3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0139008fdda107456f13f837872b410"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#ab0139008fdda107456f13f837872b410">PATH</a>&#160;&#160;&#160;0b00001000</td></tr>
<tr class="memdesc:ab0139008fdda107456f13f837872b410"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activa el muestreo de caminos aumentantes.  <a href="#ab0139008fdda107456f13f837872b410">Más...</a><br /></td></tr>
<tr class="separator:ab0139008fdda107456f13f837872b410"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a249f9f89b3a190ddd62999b1afa847c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a249f9f89b3a190ddd62999b1afa847c3">FLOW</a>&#160;&#160;&#160;0b00000100</td></tr>
<tr class="memdesc:a249f9f89b3a190ddd62999b1afa847c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activa el muestreo de flujo.  <a href="#a249f9f89b3a190ddd62999b1afa847c3">Más...</a><br /></td></tr>
<tr class="separator:a249f9f89b3a190ddd62999b1afa847c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa843fde18e1a9147df13cb76cbd2b77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#afa843fde18e1a9147df13cb76cbd2b77">CUT</a>&#160;&#160;&#160;0b00000010</td></tr>
<tr class="memdesc:afa843fde18e1a9147df13cb76cbd2b77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activa el muestreo de corte.  <a href="#afa843fde18e1a9147df13cb76cbd2b77">Más...</a><br /></td></tr>
<tr class="separator:afa843fde18e1a9147df13cb76cbd2b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a657cb102146c47173dff99438bc225cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a657cb102146c47173dff99438bc225cf">FLOW_V</a>&#160;&#160;&#160;0b00000001</td></tr>
<tr class="memdesc:a657cb102146c47173dff99438bc225cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Activa el muestreo de valor del flujo.  <a href="#a657cb102146c47173dff99438bc225cf">Más...</a><br /></td></tr>
<tr class="separator:a657cb102146c47173dff99438bc225cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83b5b7cc41c6290c3c2ae4824ac66cb7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a83b5b7cc41c6290c3c2ae4824ac66cb7">SET_FLAG</a>(f)&#160;&#160;&#160;STATUS |= f</td></tr>
<tr class="memdesc:a83b5b7cc41c6290c3c2ae4824ac66cb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setea un bit de flag en STATUS en 1.  <a href="#a83b5b7cc41c6290c3c2ae4824ac66cb7">Más...</a><br /></td></tr>
<tr class="separator:a83b5b7cc41c6290c3c2ae4824ac66cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9db4153fec89607db0b7bb7fe9cda7d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a9db4153fec89607db0b7bb7fe9cda7d1">UNSET_FLAG</a>(f)&#160;&#160;&#160;STATUS &amp;= ~f</td></tr>
<tr class="memdesc:a9db4153fec89607db0b7bb7fe9cda7d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setea un bit de flag en STATUS en 0.  <a href="#a9db4153fec89607db0b7bb7fe9cda7d1">Más...</a><br /></td></tr>
<tr class="separator:a9db4153fec89607db0b7bb7fe9cda7d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a061350ba02f3d7830497f165cf345512"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a061350ba02f3d7830497f165cf345512">CLEAR_FLAG</a>()&#160;&#160;&#160;0b00000000</td></tr>
<tr class="memdesc:a061350ba02f3d7830497f165cf345512"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pone todas las flags en 0.  <a href="#a061350ba02f3d7830497f165cf345512">Más...</a><br /></td></tr>
<tr class="separator:a061350ba02f3d7830497f165cf345512"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaf490cad6df617d537e9c215ae50044"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#afaf490cad6df617d537e9c215ae50044">IS_SET_FLAG</a>(f)&#160;&#160;&#160;(STATUS &amp; f) &gt; 0</td></tr>
<tr class="memdesc:afaf490cad6df617d537e9c215ae50044"><td class="mdescLeft">&#160;</td><td class="mdescRight">Consulta si una flag esta activa.  <a href="#afaf490cad6df617d537e9c215ae50044">Más...</a><br /></td></tr>
<tr class="separator:afaf490cad6df617d537e9c215ae50044"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Funciones</h2></td></tr>
<tr class="memitem:a4ceb32271024edfda1982e81f542ac6a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a4ceb32271024edfda1982e81f542ac6a">load_from_stdin</a> (<a class="el" href="structDovahkiinP.html">DovahkiinP</a> dova)</td></tr>
<tr class="memdesc:a4ceb32271024edfda1982e81f542ac6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lee desde el standard input los lados del network y los carga en dovahkiin.  <a href="#a4ceb32271024edfda1982e81f542ac6a">Más...</a><br /></td></tr>
<tr class="separator:a4ceb32271024edfda1982e81f542ac6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e5139b059c3d7c2e0a142f9cb68cc3f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a6e5139b059c3d7c2e0a142f9cb68cc3f">print_help</a> (char *programName)</td></tr>
<tr class="memdesc:a6e5139b059c3d7c2e0a142f9cb68cc3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Imprime la ayuda del programa.  <a href="#a6e5139b059c3d7c2e0a142f9cb68cc3f">Más...</a><br /></td></tr>
<tr class="separator:a6e5139b059c3d7c2e0a142f9cb68cc3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73629894515f9c223bd9b2b3c294888a"><td class="memItemLeft" align="right" valign="top">static short int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a73629894515f9c223bd9b2b3c294888a">parametersChecker</a> (int argc, char *argv[], <a class="el" href="__u64_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> *source, <a class="el" href="__u64_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> *sink)</td></tr>
<tr class="memdesc:a73629894515f9c223bd9b2b3c294888a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifica si los parámetros con los que se invoco al programa son correctos.  <a href="#a73629894515f9c223bd9b2b3c294888a">Más...</a><br /></td></tr>
<tr class="separator:a73629894515f9c223bd9b2b3c294888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d7885d1387782fc418c6dd2e1d435f7"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a5d7885d1387782fc418c6dd2e1d435f7">print_dinicTime</a> (float time)</td></tr>
<tr class="memdesc:a5d7885d1387782fc418c6dd2e1d435f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Imprime el tiempo que tarda el algoritmo DINIC en ejecutarse en formato [hh:mm:ss.ms].  <a href="#a5d7885d1387782fc418c6dd2e1d435f7">Más...</a><br /></td></tr>
<tr class="separator:a5d7885d1387782fc418c6dd2e1d435f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc79a0ce6660bb7902ffc9cc9fb50f75"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#afc79a0ce6660bb7902ffc9cc9fb50f75">isu64</a> (char *sU64)</td></tr>
<tr class="memdesc:afc79a0ce6660bb7902ffc9cc9fb50f75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifica que se le haya pasado como parámetro algo de tipo u64.  <a href="#afc79a0ce6660bb7902ffc9cc9fb50f75">Más...</a><br /></td></tr>
<tr class="separator:afc79a0ce6660bb7902ffc9cc9fb50f75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
<tr class="memdesc:a0ddf1224851353fc92bfbff6f499fa97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Algoritmo principal.  <a href="#a0ddf1224851353fc92bfbff6f499fa97">Más...</a><br /></td></tr>
<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Documentación de los 'defines'</h2>
<a class="anchor" id="ac2703d00e705d8333814a8cfa4446b4f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DONT_DINIC&#160;&#160;&#160;0b10000000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Main para probar la API que corre el algoritmo DINIC en networks. </p>
<p>Permite (o no) que se realice dinic. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00013">13</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a14bc2dfa42241600d567369cd25ddc70"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define S_OK&#160;&#160;&#160;0b01000000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>'s' fue pasado como parámetro. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00014">14</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="ad66884268b15b247511f33de5b432ad7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define T_OK&#160;&#160;&#160;0b00100000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>'t' fue pasado como parámetro. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00015">15</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a992b37f9220c18652955c2ab5bb49e3d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DINIC_TIME&#160;&#160;&#160;0b00010000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Activa el muestreo de tiempos de calculo. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00016">16</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="ab0139008fdda107456f13f837872b410"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define PATH&#160;&#160;&#160;0b00001000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Activa el muestreo de caminos aumentantes. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00017">17</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a249f9f89b3a190ddd62999b1afa847c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FLOW&#160;&#160;&#160;0b00000100</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Activa el muestreo de flujo. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00018">18</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="afa843fde18e1a9147df13cb76cbd2b77"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CUT&#160;&#160;&#160;0b00000010</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Activa el muestreo de corte. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00019">19</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a657cb102146c47173dff99438bc225cf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FLOW_V&#160;&#160;&#160;0b00000001</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Activa el muestreo de valor del flujo. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00020">20</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a83b5b7cc41c6290c3c2ae4824ac66cb7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SET_FLAG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">f</td><td>)</td>
          <td>&#160;&#160;&#160;STATUS |= f</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Setea un bit de flag en STATUS en 1. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00022">22</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a9db4153fec89607db0b7bb7fe9cda7d1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define UNSET_FLAG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">f</td><td>)</td>
          <td>&#160;&#160;&#160;STATUS &amp;= ~f</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Setea un bit de flag en STATUS en 0. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00023">23</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

</div>
</div>
<a class="anchor" id="a061350ba02f3d7830497f165cf345512"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CLEAR_FLAG</td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td>&#160;&#160;&#160;0b00000000</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Pone todas las flags en 0. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00024">24</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="afaf490cad6df617d537e9c215ae50044"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define IS_SET_FLAG</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">f</td><td>)</td>
          <td>&#160;&#160;&#160;(STATUS &amp; f) &gt; 0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Consulta si una flag esta activa. </p>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00025">25</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a> y <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<h2 class="groupheader">Documentación de las funciones</h2>
<a class="anchor" id="a4ceb32271024edfda1982e81f542ac6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void load_from_stdin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structDovahkiinP.html">DovahkiinP</a>&#160;</td>
          <td class="paramname"><em>dova</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Lee desde el standard input los lados del network y los carga en dovahkiin. </p>
<p>Se lee hasta acabar los lados o bien hasta el primer lado que no se pueda cargar. </p><dl class="params"><dt>Parámetros</dt><dd>
  <table class="params">
    <tr><td class="paramname">dova</td><td>El dova donde se cargaran los lados. </td></tr>
  </table>
  </dd>
</dl>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00039">39</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a>.</p>

</div>
</div>
<a class="anchor" id="a6e5139b059c3d7c2e0a142f9cb68cc3f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void print_help </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>programName</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Imprime la ayuda del programa. </p>
<dl class="params"><dt>Parámetros</dt><dd>
  <table class="params">
    <tr><td class="paramname">programName</td><td>Nombre del programa. Se pasa por parámetro por si se cambia al compilar. Encontrado en arv[0]. </td></tr>
  </table>
  </dd>
</dl>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00055">55</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a73629894515f9c223bd9b2b3c294888a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">short int parametersChecker </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>argv</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="__u64_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> *&#160;</td>
          <td class="paramname"><em>source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="__u64_8h.html#a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</a> *&#160;</td>
          <td class="paramname"><em>sink</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Verifica si los parámetros con los que se invoco al programa son correctos. </p>
<dl class="params"><dt>Parámetros</dt><dd>
  <table class="params">
    <tr><td class="paramname">argc</td><td>Indica el largo del arreglo argv. </td></tr>
    <tr><td class="paramname">argv</td><td>Vector de argumentos con los que se invoco al programa. </td></tr>
    <tr><td class="paramname">source</td><td>Fuente del <a class="el" href="structNetwork.html" title="Estructura de un netwrok con la información de los nodos. ">Network</a>. </td></tr>
    <tr><td class="paramname">sink</td><td>Resumidero del <a class="el" href="structNetwork.html" title="Estructura de un netwrok con la información de los nodos. ">Network</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Devuelve</dt><dd>Retorna un Short int indicando el estado de los parámetros.<br />
<ul>
<li>Estados:<br />
<ul>
<li>DONT_DINIC Permite (o no) que se realice dinic.<br />
</li>
<li>S_OK Indica que 's' fue pasado como parámetro.<br />
</li>
<li>T_OK Indica que 't' fue pasado como parámetro.<br />
</li>
<li>DINIC_TIME Activa el muestreo de tiempos de calculo.<br />
</li>
<li>PATH Activa el muestreo de caminos aumentantes.<br />
</li>
<li>FLOW Activa el muestreo de flujo.<br />
</li>
<li>CUT Activa el muestreo de corte.<br />
</li>
<li>FLOW_V Activa el muestre de valor del flujo.<br />
</li>
</ul>
</li>
</ul>
</dd></dl>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00090">90</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a>.</p>

</div>
</div>
<a class="anchor" id="a5d7885d1387782fc418c6dd2e1d435f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void print_dinicTime </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>time</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Imprime el tiempo que tarda el algoritmo DINIC en ejecutarse en formato [hh:mm:ss.ms]. </p>
<p>No contabiliza el tiempo de carga de los elementos del network ni otras acciones innecesarias. Esto es así porque se supone que el tiempo de carga varia mucho cuando se pide al sistema operativo interactuar con IO. De esta manera se logra un tiempo solamente de la parte del programa que implementa DINIC. </p><dl class="params"><dt>Parámetros</dt><dd>
  <table class="params">
    <tr><td class="paramname">time</td><td>Tiempo que tardo el algoritmo DINIC en correr medidos segundos. </td></tr>
  </table>
  </dd>
</dl>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00209">209</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00225">main()</a>.</p>

</div>
</div>
<a class="anchor" id="afc79a0ce6660bb7902ffc9cc9fb50f75"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool isu64 </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>sU64</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Verifica que se le haya pasado como parámetro algo de tipo u64. </p>
<dl class="params"><dt>Parámetros</dt><dd>
  <table class="params">
    <tr><td class="paramname">sU64</td><td>String para verificar que sea u64. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section pre"><dt>Precondición</dt><dd>su64 no es nulo. </dd></dl>
<dl class="section return"><dt>Devuelve</dt><dd>True si el parámetro es un u64. False caso contrario. </dd></dl>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00190">190</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

<p>Referenciado por <a class="el" href="main_8c_source.html#l00090">parametersChecker()</a>.</p>

</div>
</div>
<a class="anchor" id="a0ddf1224851353fc92bfbff6f499fa97"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>argc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>argv</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Algoritmo principal. </p>
<p>Se encarga de llamar las funciones del API para implementar DINIC. </p><dl class="params"><dt>Parámetros</dt><dd>
  <table class="params">
    <tr><td class="paramname">argc</td><td>Cantidad de argumentos con los que se invoco el programa. </td></tr>
    <tr><td class="paramname">argv</td><td>Vector de argumentos con los que se invoco el programa. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Devuelve</dt><dd>Retorna un 0 si el programa termina. </dd></dl>

<p>Definición en la línea <a class="el" href="main_8c_source.html#l00225">225</a> del archivo <a class="el" href="main_8c_source.html">main.c</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_cb13ae713b9a8d90f19df44f72edc721.html">dirmain</a></li><li class="navelem"><a class="el" href="main_8c.html">main.c</a></li>
    <li class="footer">Generado el Lunes, 29 de Septiembre de 2014 22:00:00 para Dinic por
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.8 </li>
  </ul>
</div>
</body>
</html>
